﻿using Newtonsoft.Json.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

public class LoginServiceImpl : ILoginService
{
    // 定义 API 基础 URL
    private const string ApiBase = "http://www.0531yun.com";

    // 创建 HttpClient 实例，用于发送 HTTP 请求
    private readonly HttpClient _httpClient = new HttpClient();

    // 异步方法，用于登录并获取 Token
    public async Task<string> LoginAsync(string username, string password)
    {
        try
        {
            // 构建请求体
            var formData = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("loginName", username),
                new KeyValuePair<string, string>("password", password)
            });

            // 发送 POST 请求到登录 API
            var response = await _httpClient.PostAsync($"{ApiBase}/api/getToken", formData);

            // 确保 HTTP 响应状态码为成功状态码（200 - 299）
            response.EnsureSuccessStatusCode();

            // 读取响应内容为字符串
            var content = await response.Content.ReadAsStringAsync();

            // 将响应内容解析为 JObject
            var result = JObject.Parse(content);

            // 从解析后的 JSON 对象中提取 Token 并返回
            return result["data"]["token"].ToString();
        }
        catch (Exception ex)
        {
            // 捕获并抛出异常，包含错误信息
            throw new System.Exception("Token获取失败", ex);
        }
    }
}